package org.ch02.test09.demo01;

import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;

/**
 * 内省操作
 * BeanInfo:JavaBean对象的封装
 * PropertyDescriptor：JavaBean对象的属性封装
 * MethodDescriptor：JavaBean对象的方法封装
 *
 * @author CSY
 * @date 2025 - 03 - 24
 */
public class MainTest {
    public static void main(String[] args) throws Exception {
        //第一：通过 Introspector 工具类获取要操作的 JavaBean 对象的 BeanInfo 对象
        //不指定第二个参数那么将会拿到当前类和其父类的东西
        BeanInfo personBeanInfo = Introspector.getBeanInfo(Person.class);

        //第二：基于BeanInfo对象，实现相关的操作
        //实现属性（setter/getter）的读和写操作
        PropertyDescriptor[] propertyDescriptors = personBeanInfo.getPropertyDescriptors();
        System.out.println(propertyDescriptors.length);
        for (PropertyDescriptor p : propertyDescriptors) {
            System.out.println(p);
        }

    }
}
